const jwt = require('jsonwebtoken');

// 验证JWT令牌的中间件
const verifyToken = (req, res, next) => {
  // 从请求头获取令牌
  const authHeader = req.headers.authorization;
  
  if (!authHeader || !authHeader.startsWith('Bearer ')) {
    return res.status(401).json({ message: '未提供认证令牌' });
  }
  
  // 提取令牌
  const token = authHeader.split(' ')[1];
  
  try {
    // 验证令牌
    const decoded = jwt.verify(token, process.env.JWT_SECRET);
    
    // 将用户信息添加到请求对象
    req.user = decoded;
    
    // 继续处理请求
    next();
  } catch (error) {
    console.error('令牌验证失败:', error);
    return res.status(401).json({ message: '无效的认证令牌' });
  }
};

// 验证管理员权限的中间件
const verifyAdmin = (req, res, next) => {
  // 首先验证令牌
  verifyToken(req, res, () => {
    // 检查用户是否为管理员
    if (req.user && req.user.isAdmin) {
      next();
    } else {
      return res.status(403).json({ message: '需要管理员权限' });
    }
  });
};

module.exports = {
  verifyToken,
  verifyAdmin
};
